{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np \n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import LSTM\n",
    "import scipy.signal as sig\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "from sklearn.model_selection import train_test_split\n",
    "import math\n",
    "from multiprocessing import Pool\n",
    "import traceback\n",
    "import warnings\n",
    "import sys\n",
    "from sklearn.metrics import mean_squared_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def add_awgn_noise(signal,SNR_dB):\n",
    "    \"\"\"  Adds AWGN noise vector to signal \n",
    "         to generate a resulting signal vector y of specified SNR in dB\n",
    "    \"\"\"\n",
    "    L=len(signal)\n",
    "    SNR = 10**(SNR_dB/20.0) #SNR to linear scale\n",
    "    Esym=np.sum(np.square(np.abs(signal)))/L #Calculate actual symbol energy\n",
    "    N0=Esym/SNR; #Find the noise spectral density\n",
    "    if(isinstance(signal[0], complex)):\n",
    "        noiseSigma=np.sqrt(N0/2.0)#Standard deviation for AWGN Noise when x is complex\n",
    "        n = noiseSigma*(np.random.randn(1,L)+1j*np.random.randn(1,L))#computed noise \n",
    "    else:\n",
    "        noiseSigma = np.sqrt(N0);#Standard deviation for AWGN Noise when x is real\n",
    "        n = noiseSigma*np.random.randn(1,L)#computed noise\n",
    "    y = signal + n #received signal\n",
    "    \n",
    "    return y.flatten()\n",
    "\n",
    "def calc_accuracy(original, predictions):\n",
    "    return np.sum(original == predictions) / (original.shape[0] * original.shape[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_combined_dataset_qam_4_edited(dataset_size,  preamble_length, data_length, channel_length, SNR, constellations):\n",
    "    QAMModem = cp.modulation.QAMModem(constellations)\n",
    "    \n",
    "    # use the constellation object to modulate the data bits into complex numbers\n",
    "    \n",
    "    \n",
    "    preambles_constellations = []\n",
    "    input_data_constellations = []\n",
    "    convolved_preambles = []\n",
    "    convolved_data_constellations = []\n",
    "    channels = []\n",
    "    \n",
    "    for i in range(dataset_size):\n",
    "        input_data_bits = np.random.randint(0, 2, data_length)\n",
    "        preambles = np.random.randint(0, 2, preamble_length)\n",
    "        \n",
    "        input_data_constellation = QAMModem.modulate(input_data_bits)\n",
    "        real_input = np.real(input_data_constellation)\n",
    "        im_input = np.imag(input_data_constellation)\n",
    "        real_im_input = np.vstack((real_input,im_input)).T\n",
    "        input_data_constellations.append(real_im_input)\n",
    "        \n",
    "        preambles_constellation =  QAMModem.modulate(preambles)\n",
    "        real_preambles = np.real(preambles_constellation)\n",
    "        im_preambles = np.imag(preambles_constellation)\n",
    "        real_im_preambles = np.vstack((real_preambles,im_preambles)).reshape((-1,),order='F')\n",
    "        preambles_constellations.append(real_im_preambles)\n",
    "        \n",
    "        channel_taps = np.random.uniform(-1, 1, channel_length)\n",
    "        channel_taps = channel_taps / np.linalg.norm(channel_taps)\n",
    "        channels.append(channel_taps)\n",
    "       \n",
    "        preamble_conv = sig.convolve(preambles_constellation, channel_taps, mode='same')\n",
    "        real_preambles_conv = np.real(preamble_conv)\n",
    "        im_preambles_conv = np.imag(preamble_conv)\n",
    "        real_im_preambles_conv = np.vstack((real_preambles_conv,im_preambles_conv)).reshape((-1,),order='F')\n",
    "        convolved_preambles.append(real_im_preambles_conv)\n",
    "        \n",
    "        constellation_convolved = add_awgn_noise(sig.convolve(input_data_constellation, channel_taps, mode='same'), SNR)\n",
    "        real_constellation_conv = np.real(constellation_convolved)\n",
    "        im_constellation_conv = np.imag(constellation_convolved)\n",
    "        real_im_constellation_conv = np.vstack((real_constellation_conv,im_constellation_conv)).T\n",
    "        convolved_data_constellations.append(real_im_constellation_conv)\n",
    "        \n",
    "    X1 = np.hstack([preambles_constellations, np.array(convolved_preambles)])\n",
    "    X2 = np.array(convolved_data_constellations)\n",
    "    Y = np.array(input_data_constellations)\n",
    "    channels = np.array(channels)\n",
    "#     plt.scatter(np.zeros(input_data_constellations.shape[1]), input_data_constellations[0])\n",
    "#     plt.show()\n",
    "    return X1, X2, Y, channels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.layers import Bidirectional\n",
    "from keras.layers import RepeatVector\n",
    "from keras.layers import Input\n",
    "from keras.layers import concatenate\n",
    "from keras.models import Model\n",
    "from keras.layers import TimeDistributed\n",
    "def build_end_to_end_model_regression_larger_bidir_real_im_features(preamble_length, data_length, channel_length, output_length):\n",
    "    preamble = Input(shape=(preamble_length,))\n",
    "    data = Input(shape=(data_length, 2))\n",
    "    \n",
    "    \n",
    "    preamble_layer_1 = Dense(300, activation='relu')(preamble)\n",
    "    preamble_layer_2 = Dense(300, activation='relu')(preamble_layer_1)\n",
    "    \n",
    "    channel = Dense(channel_length, activation='sigmoid')(preamble_layer_2)\n",
    "    \n",
    "    channel_repeated = RepeatVector(data_length)(channel)\n",
    "    \n",
    "    output = concatenate([data, channel_repeated])\n",
    "    data_layers = Bidirectional(LSTM(45, return_sequences=True))(output)\n",
    "    data_layers_2 = Bidirectional(LSTM(45, return_sequences=True))(data_layers)\n",
    "    \n",
    "    output_1 = TimeDistributed(Dense(output_length, activation='relu'))(data_layers_2)\n",
    "    output = TimeDistributed(Dense(2, activation='linear'))(output_1)\n",
    "    model = Model(inputs=[preamble, data], outputs=[output])\n",
    "    \n",
    "    model.compile(optimizer='adam', loss='mse', metrics=['mse'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(80000, 160) (20000, 160)\n",
      "(80000, 200, 2) (20000, 200, 2)\n",
      "(80000, 200, 2) (20000, 200, 2)\n",
      "(80000, 2) (20000, 2)\n",
      "[[-0.98755346  0.15728372]\n",
      " [-0.05139682  0.99867831]\n",
      " [ 0.2522347   0.96766609]\n",
      " ...\n",
      " [-0.66804073 -0.74412471]\n",
      " [-0.60753852 -0.79429022]\n",
      " [-0.40034435 -0.91636478]]\n"
     ]
    }
   ],
   "source": [
    "preamble_length = 80\n",
    "data_length = 400\n",
    "dataset_size = 100000\n",
    "channel_length = 2\n",
    "SNR = 10\n",
    "QAM_scheme = 4\n",
    "preamble_data, convolved_data, input_data_symbols, channels = generate_combined_dataset_qam_4_edited(dataset_size, preamble_length, data_length, channel_length, SNR, QAM_scheme)\n",
    "train_size = int(input_data_symbols.shape[0] * 0.8)\n",
    "preamble_train, preamble_test = preamble_data[:train_size], preamble_data[train_size:]\n",
    "convolved_train, convolved_test = convolved_data[:train_size], convolved_data[train_size:]\n",
    "input_data_symbols_train, input_data_symbols_test = input_data_symbols[:train_size], input_data_symbols[train_size:]\n",
    "channel_train, channel_test = channels[:train_size], channels[train_size:]\n",
    "print(preamble_train.shape, preamble_test.shape)\n",
    "print(convolved_train.shape, convolved_test.shape)\n",
    "print(input_data_symbols_train.shape, input_data_symbols_test.shape)\n",
    "print(channel_train.shape, channel_test.shape)\n",
    "print(channels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import SVG\n",
    "from keras.utils.vis_utils import model_to_dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg height=\"782pt\" viewBox=\"0.00 0.00 649.98 782.00\" width=\"650pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 778)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"#ffffff\" points=\"-4,4 -4,-778 645.9834,-778 645.9834,4 -4,4\" stroke=\"transparent\"/>\n",
       "<!-- 4765772488 -->\n",
       "<g class=\"node\" id=\"node1\">\n",
       "<title>4765772488</title>\n",
       "<polygon fill=\"none\" points=\"37.3037,-729.5 37.3037,-773.5 304.9834,-773.5 304.9834,-729.5 37.3037,-729.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"101.4849\" y=\"-747.3\">input_3: InputLayer</text>\n",
       "<polyline fill=\"none\" points=\"165.666,-729.5 165.666,-773.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"193.5005\" y=\"-758.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"165.666,-751.5 221.335,-751.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"193.5005\" y=\"-736.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"221.335,-729.5 221.335,-773.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"263.1592\" y=\"-758.3\">(None, 160)</text>\n",
       "<polyline fill=\"none\" points=\"221.335,-751.5 304.9834,-751.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"263.1592\" y=\"-736.3\">(None, 160)</text>\n",
       "</g>\n",
       "<!-- 5581493640 -->\n",
       "<g class=\"node\" id=\"node2\">\n",
       "<title>5581493640</title>\n",
       "<polygon fill=\"none\" points=\"49.3589,-648.5 49.3589,-692.5 292.9282,-692.5 292.9282,-648.5 49.3589,-648.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"101.4849\" y=\"-666.3\">dense_4: Dense</text>\n",
       "<polyline fill=\"none\" points=\"153.6108,-648.5 153.6108,-692.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"181.4453\" y=\"-677.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"153.6108,-670.5 209.2798,-670.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"181.4453\" y=\"-655.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"209.2798,-648.5 209.2798,-692.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"251.104\" y=\"-677.3\">(None, 160)</text>\n",
       "<polyline fill=\"none\" points=\"209.2798,-670.5 292.9282,-670.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"251.104\" y=\"-655.3\">(None, 300)</text>\n",
       "</g>\n",
       "<!-- 4765772488&#45;&gt;5581493640 -->\n",
       "<g class=\"edge\" id=\"edge1\">\n",
       "<title>4765772488-&gt;5581493640</title>\n",
       "<path d=\"M171.1436,-729.3664C171.1436,-721.1516 171.1436,-711.6579 171.1436,-702.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"174.6437,-702.6068 171.1436,-692.6068 167.6437,-702.6069 174.6437,-702.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4765321312 -->\n",
       "<g class=\"node\" id=\"node3\">\n",
       "<title>4765321312</title>\n",
       "<polygon fill=\"none\" points=\"49.3589,-567.5 49.3589,-611.5 292.9282,-611.5 292.9282,-567.5 49.3589,-567.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"101.4849\" y=\"-585.3\">dense_5: Dense</text>\n",
       "<polyline fill=\"none\" points=\"153.6108,-567.5 153.6108,-611.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"181.4453\" y=\"-596.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"153.6108,-589.5 209.2798,-589.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"181.4453\" y=\"-574.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"209.2798,-567.5 209.2798,-611.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"251.104\" y=\"-596.3\">(None, 300)</text>\n",
       "<polyline fill=\"none\" points=\"209.2798,-589.5 292.9282,-589.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"251.104\" y=\"-574.3\">(None, 300)</text>\n",
       "</g>\n",
       "<!-- 5581493640&#45;&gt;4765321312 -->\n",
       "<g class=\"edge\" id=\"edge2\">\n",
       "<title>5581493640-&gt;4765321312</title>\n",
       "<path d=\"M171.1436,-648.3664C171.1436,-640.1516 171.1436,-630.6579 171.1436,-621.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"174.6437,-621.6068 171.1436,-611.6068 167.6437,-621.6069 174.6437,-621.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4765786632 -->\n",
       "<g class=\"node\" id=\"node4\">\n",
       "<title>4765786632</title>\n",
       "<polygon fill=\"none\" points=\"49.3589,-486.5 49.3589,-530.5 292.9282,-530.5 292.9282,-486.5 49.3589,-486.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"101.4849\" y=\"-504.3\">dense_6: Dense</text>\n",
       "<polyline fill=\"none\" points=\"153.6108,-486.5 153.6108,-530.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"181.4453\" y=\"-515.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"153.6108,-508.5 209.2798,-508.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"181.4453\" y=\"-493.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"209.2798,-486.5 209.2798,-530.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"251.104\" y=\"-515.3\">(None, 300)</text>\n",
       "<polyline fill=\"none\" points=\"209.2798,-508.5 292.9282,-508.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"251.104\" y=\"-493.3\">(None, 2)</text>\n",
       "</g>\n",
       "<!-- 4765321312&#45;&gt;4765786632 -->\n",
       "<g class=\"edge\" id=\"edge3\">\n",
       "<title>4765321312-&gt;4765786632</title>\n",
       "<path d=\"M171.1436,-567.3664C171.1436,-559.1516 171.1436,-549.6579 171.1436,-540.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"174.6437,-540.6068 171.1436,-530.6068 167.6437,-540.6069 174.6437,-540.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4765858784 -->\n",
       "<g class=\"node\" id=\"node6\">\n",
       "<title>4765858784</title>\n",
       "<polygon fill=\"none\" points=\"0,-405.5 0,-449.5 342.2871,-449.5 342.2871,-405.5 0,-405.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"94.4849\" y=\"-423.3\">repeat_vector_2: RepeatVector</text>\n",
       "<polyline fill=\"none\" points=\"188.9697,-405.5 188.9697,-449.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"216.8042\" y=\"-434.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"188.9697,-427.5 244.6387,-427.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"216.8042\" y=\"-412.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"244.6387,-405.5 244.6387,-449.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"293.4629\" y=\"-434.3\">(None, 2)</text>\n",
       "<polyline fill=\"none\" points=\"244.6387,-427.5 342.2871,-427.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"293.4629\" y=\"-412.3\">(None, 200, 2)</text>\n",
       "</g>\n",
       "<!-- 4765786632&#45;&gt;4765858784 -->\n",
       "<g class=\"edge\" id=\"edge4\">\n",
       "<title>4765786632-&gt;4765858784</title>\n",
       "<path d=\"M171.1436,-486.3664C171.1436,-478.1516 171.1436,-468.6579 171.1436,-459.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"174.6437,-459.6068 171.1436,-449.6068 167.6437,-459.6069 174.6437,-459.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4765772992 -->\n",
       "<g class=\"node\" id=\"node5\">\n",
       "<title>4765772992</title>\n",
       "<polygon fill=\"none\" points=\"360.3037,-405.5 360.3037,-449.5 641.9834,-449.5 641.9834,-405.5 360.3037,-405.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"424.4849\" y=\"-423.3\">input_4: InputLayer</text>\n",
       "<polyline fill=\"none\" points=\"488.666,-405.5 488.666,-449.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"516.5005\" y=\"-434.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"488.666,-427.5 544.335,-427.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"516.5005\" y=\"-412.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"544.335,-405.5 544.335,-449.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"593.1592\" y=\"-434.3\">(None, 200, 2)</text>\n",
       "<polyline fill=\"none\" points=\"544.335,-427.5 641.9834,-427.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"593.1592\" y=\"-412.3\">(None, 200, 2)</text>\n",
       "</g>\n",
       "<!-- 4765859568 -->\n",
       "<g class=\"node\" id=\"node7\">\n",
       "<title>4765859568</title>\n",
       "<polygon fill=\"none\" points=\"124.1792,-324.5 124.1792,-368.5 548.1079,-368.5 548.1079,-324.5 124.1792,-324.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"210.4985\" y=\"-342.3\">concatenate_2: Concatenate</text>\n",
       "<polyline fill=\"none\" points=\"296.8179,-324.5 296.8179,-368.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"324.6523\" y=\"-353.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"296.8179,-346.5 352.4868,-346.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"324.6523\" y=\"-331.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"352.4868,-324.5 352.4868,-368.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"450.2974\" y=\"-353.3\">[(None, 200, 2), (None, 200, 2)]</text>\n",
       "<polyline fill=\"none\" points=\"352.4868,-346.5 548.1079,-346.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"449.811\" y=\"-331.3\">(None, 200, 4)</text>\n",
       "</g>\n",
       "<!-- 4765772992&#45;&gt;4765859568 -->\n",
       "<g class=\"edge\" id=\"edge5\">\n",
       "<title>4765772992-&gt;4765859568</title>\n",
       "<path d=\"M456.0566,-405.3664C435.776,-395.4105 411.6686,-383.5759 390.4066,-373.1382\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"391.6951,-369.8718 381.176,-368.6068 388.6103,-376.1555 391.6951,-369.8718\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4765858784&#45;&gt;4765859568 -->\n",
       "<g class=\"edge\" id=\"edge6\">\n",
       "<title>4765858784-&gt;4765859568</title>\n",
       "<path d=\"M216.2305,-405.3664C236.5111,-395.4105 260.6185,-383.5759 281.8805,-373.1382\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"283.6768,-376.1555 291.1111,-368.6068 280.592,-369.8718 283.6768,-376.1555\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4766293016 -->\n",
       "<g class=\"node\" id=\"node8\">\n",
       "<title>4766293016</title>\n",
       "<polygon fill=\"none\" points=\"118.3174,-243.5 118.3174,-287.5 553.9697,-287.5 553.9697,-243.5 118.3174,-243.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"255.9849\" y=\"-261.3\">bidirectional_3(lstm_3): Bidirectional(LSTM)</text>\n",
       "<polyline fill=\"none\" points=\"393.6523,-243.5 393.6523,-287.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"421.4868\" y=\"-272.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"393.6523,-265.5 449.3213,-265.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"421.4868\" y=\"-250.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"449.3213,-243.5 449.3213,-287.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"501.6455\" y=\"-272.3\">(None, 200, 4)</text>\n",
       "<polyline fill=\"none\" points=\"449.3213,-265.5 553.9697,-265.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"501.6455\" y=\"-250.3\">(None, 200, 90)</text>\n",
       "</g>\n",
       "<!-- 4765859568&#45;&gt;4766293016 -->\n",
       "<g class=\"edge\" id=\"edge7\">\n",
       "<title>4765859568-&gt;4766293016</title>\n",
       "<path d=\"M336.1436,-324.3664C336.1436,-316.1516 336.1436,-306.6579 336.1436,-297.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"339.6437,-297.6068 336.1436,-287.6068 332.6437,-297.6069 339.6437,-297.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4768692488 -->\n",
       "<g class=\"node\" id=\"node9\">\n",
       "<title>4768692488</title>\n",
       "<polygon fill=\"none\" points=\"118.3174,-162.5 118.3174,-206.5 553.9697,-206.5 553.9697,-162.5 118.3174,-162.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"255.9849\" y=\"-180.3\">bidirectional_4(lstm_4): Bidirectional(LSTM)</text>\n",
       "<polyline fill=\"none\" points=\"393.6523,-162.5 393.6523,-206.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"421.4868\" y=\"-191.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"393.6523,-184.5 449.3213,-184.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"421.4868\" y=\"-169.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"449.3213,-162.5 449.3213,-206.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"501.6455\" y=\"-191.3\">(None, 200, 90)</text>\n",
       "<polyline fill=\"none\" points=\"449.3213,-184.5 553.9697,-184.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"501.6455\" y=\"-169.3\">(None, 200, 90)</text>\n",
       "</g>\n",
       "<!-- 4766293016&#45;&gt;4768692488 -->\n",
       "<g class=\"edge\" id=\"edge8\">\n",
       "<title>4766293016-&gt;4768692488</title>\n",
       "<path d=\"M336.1436,-243.3664C336.1436,-235.1516 336.1436,-225.6579 336.1436,-216.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"339.6437,-216.6068 336.1436,-206.6068 332.6437,-216.6069 339.6437,-216.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4781440920 -->\n",
       "<g class=\"node\" id=\"node10\">\n",
       "<title>4781440920</title>\n",
       "<polygon fill=\"none\" points=\"92.2485,-81.5 92.2485,-125.5 580.0386,-125.5 580.0386,-81.5 92.2485,-81.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"252.4849\" y=\"-99.3\">time_distributed_1(dense_7): TimeDistributed(Dense)</text>\n",
       "<polyline fill=\"none\" points=\"412.7212,-81.5 412.7212,-125.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"440.5557\" y=\"-110.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"412.7212,-103.5 468.3901,-103.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"440.5557\" y=\"-88.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"468.3901,-81.5 468.3901,-125.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"524.2144\" y=\"-110.3\">(None, 200, 90)</text>\n",
       "<polyline fill=\"none\" points=\"468.3901,-103.5 580.0386,-103.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"524.2144\" y=\"-88.3\">(None, 200, 200)</text>\n",
       "</g>\n",
       "<!-- 4768692488&#45;&gt;4781440920 -->\n",
       "<g class=\"edge\" id=\"edge9\">\n",
       "<title>4768692488-&gt;4781440920</title>\n",
       "<path d=\"M336.1436,-162.3664C336.1436,-154.1516 336.1436,-144.6579 336.1436,-135.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"339.6437,-135.6068 336.1436,-125.6068 332.6437,-135.6069 339.6437,-135.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "<!-- 4781611776 -->\n",
       "<g class=\"node\" id=\"node11\">\n",
       "<title>4781611776</title>\n",
       "<polygon fill=\"none\" points=\"92.2485,-.5 92.2485,-44.5 580.0386,-44.5 580.0386,-.5 92.2485,-.5\" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"252.4849\" y=\"-18.3\">time_distributed_2(dense_8): TimeDistributed(Dense)</text>\n",
       "<polyline fill=\"none\" points=\"412.7212,-.5 412.7212,-44.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"440.5557\" y=\"-29.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"412.7212,-22.5 468.3901,-22.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"440.5557\" y=\"-7.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"468.3901,-.5 468.3901,-44.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"524.2144\" y=\"-29.3\">(None, 200, 200)</text>\n",
       "<polyline fill=\"none\" points=\"468.3901,-22.5 580.0386,-22.5 \" stroke=\"#000000\"/>\n",
       "<text fill=\"#000000\" font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"524.2144\" y=\"-7.3\">(None, 200, 2)</text>\n",
       "</g>\n",
       "<!-- 4781440920&#45;&gt;4781611776 -->\n",
       "<g class=\"edge\" id=\"edge10\">\n",
       "<title>4781440920-&gt;4781611776</title>\n",
       "<path d=\"M336.1436,-81.3664C336.1436,-73.1516 336.1436,-63.6579 336.1436,-54.7252\" fill=\"none\" stroke=\"#000000\"/>\n",
       "<polygon fill=\"#000000\" points=\"339.6437,-54.6068 336.1436,-44.6068 332.6437,-54.6069 339.6437,-54.6068\" stroke=\"#000000\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = build_end_to_end_model_regression_larger_bidir_real_im_features(preamble_train.shape[1], convolved_train.shape[1], channel_length, input_data_symbols_train.shape[1])\n",
    "SVG(model_to_dot(model, show_shapes=True, show_layer_names=True).create(prog='dot', format='svg'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 80000 samples, validate on 20000 samples\n",
      "Epoch 1/30\n",
      "80000/80000 [==============================] - 1807s - loss: 0.4353 - mean_squared_error: 0.4353 - val_loss: 0.3007 - val_mean_squared_error: 0.3007\n",
      "Epoch 2/30\n",
      "80000/80000 [==============================] - 1743s - loss: 0.2114 - mean_squared_error: 0.2114 - val_loss: 0.1941 - val_mean_squared_error: 0.1941\n",
      "Epoch 3/30\n",
      "80000/80000 [==============================] - 1646s - loss: 0.1866 - mean_squared_error: 0.1866 - val_loss: 0.1894 - val_mean_squared_error: 0.1894\n",
      "Epoch 4/30\n",
      "80000/80000 [==============================] - 1684s - loss: 0.1783 - mean_squared_error: 0.1783 - val_loss: 0.1770 - val_mean_squared_error: 0.1770\n",
      "Epoch 5/30\n",
      "80000/80000 [==============================] - 1752s - loss: 0.1731 - mean_squared_error: 0.1731 - val_loss: 0.1738 - val_mean_squared_error: 0.1738\n",
      "Epoch 6/30\n",
      "80000/80000 [==============================] - 1874s - loss: 0.1712 - mean_squared_error: 0.1712 - val_loss: 0.1714 - val_mean_squared_error: 0.1714\n",
      "Epoch 7/30\n",
      "80000/80000 [==============================] - 1739s - loss: 0.1697 - mean_squared_error: 0.1697 - val_loss: 0.1704 - val_mean_squared_error: 0.1704\n",
      "Epoch 8/30\n",
      "80000/80000 [==============================] - 1754s - loss: 0.1690 - mean_squared_error: 0.1690 - val_loss: 0.1703 - val_mean_squared_error: 0.1703\n",
      "Epoch 9/30\n",
      "80000/80000 [==============================] - 1687s - loss: 0.1677 - mean_squared_error: 0.1677 - val_loss: 0.1693 - val_mean_squared_error: 0.1693\n",
      "Epoch 10/30\n",
      "80000/80000 [==============================] - 1720s - loss: 0.1678 - mean_squared_error: 0.1678 - val_loss: 0.1732 - val_mean_squared_error: 0.1732\n",
      "Epoch 11/30\n",
      "80000/80000 [==============================] - 1686s - loss: 0.1679 - mean_squared_error: 0.1679 - val_loss: 0.1697 - val_mean_squared_error: 0.1697\n",
      "Epoch 12/30\n",
      "80000/80000 [==============================] - 1716s - loss: 0.1655 - mean_squared_error: 0.1655 - val_loss: 0.1679 - val_mean_squared_error: 0.1679\n",
      "Epoch 13/30\n",
      "80000/80000 [==============================] - 1772s - loss: 0.1649 - mean_squared_error: 0.1649 - val_loss: 0.1679 - val_mean_squared_error: 0.1679\n",
      "Epoch 14/30\n",
      "80000/80000 [==============================] - 1734s - loss: 0.1644 - mean_squared_error: 0.1644 - val_loss: 0.1676 - val_mean_squared_error: 0.1676\n",
      "Epoch 15/30\n",
      "80000/80000 [==============================] - 1739s - loss: 0.1641 - mean_squared_error: 0.1641 - val_loss: 0.1677 - val_mean_squared_error: 0.1677\n",
      "Epoch 16/30\n",
      "80000/80000 [==============================] - 1780s - loss: 0.1639 - mean_squared_error: 0.1639 - val_loss: 0.1672 - val_mean_squared_error: 0.1672\n",
      "Epoch 17/30\n",
      "80000/80000 [==============================] - 1701s - loss: 0.1635 - mean_squared_error: 0.1635 - val_loss: 0.1673 - val_mean_squared_error: 0.1673\n",
      "Epoch 18/30\n",
      " 3264/80000 [>.............................] - ETA: 1633s - loss: 0.1630 - mean_squared_error: 0.1630"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-18-a719bcc1a8b2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpreamble_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvolved_train\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0minput_data_symbols_train\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalidation_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpreamble_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvolved_test\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0minput_data_symbols_test\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m30\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m64\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[1;32m   1596\u001b[0m                               \u001b[0minitial_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1597\u001b[0m                               \u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1598\u001b[0;31m                               validation_steps=validation_steps)\n\u001b[0m\u001b[1;32m   1599\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1600\u001b[0m     def evaluate(self, x, y,\n",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36m_fit_loop\u001b[0;34m(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[1;32m   1181\u001b[0m                     \u001b[0mbatch_logs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1182\u001b[0m                     \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1183\u001b[0;31m                     \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1184\u001b[0m                     \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1185\u001b[0m                         \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m   2271\u001b[0m         updated = session.run(self.outputs + [self.updates_op],\n\u001b[1;32m   2272\u001b[0m                               \u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2273\u001b[0;31m                               **self.session_kwargs)\n\u001b[0m\u001b[1;32m   2274\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2275\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m    893\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    894\u001b[0m       result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 895\u001b[0;31m                          run_metadata_ptr)\n\u001b[0m\u001b[1;32m    896\u001b[0m       \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    897\u001b[0m         \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m   1122\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhandle\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mfeed_dict_tensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1123\u001b[0m       results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m-> 1124\u001b[0;31m                              feed_dict_tensor, options, run_metadata)\n\u001b[0m\u001b[1;32m   1125\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1126\u001b[0m       \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m   1319\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1320\u001b[0m       return self._do_call(_run_fn, self._session, feeds, fetches, targets,\n\u001b[0;32m-> 1321\u001b[0;31m                            options, run_metadata)\n\u001b[0m\u001b[1;32m   1322\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1323\u001b[0m       \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_prun_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeeds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetches\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m   1325\u001b[0m   \u001b[0;32mdef\u001b[0m \u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1326\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1327\u001b[0;31m       \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1328\u001b[0m     \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1329\u001b[0m       \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m   1304\u001b[0m           return tf_session.TF_Run(session, options,\n\u001b[1;32m   1305\u001b[0m                                    \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1306\u001b[0;31m                                    status, run_metadata)\n\u001b[0m\u001b[1;32m   1307\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1308\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_prun_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "model.fit([preamble_train, convolved_train], [input_data_symbols_train], validation_data=([preamble_test, convolved_test], [input_data_symbols_test]), epochs=30, batch_size=64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(20000, 200, 2) (20000, 200, 2)\n"
     ]
    }
   ],
   "source": [
    "predictions = model.predict([preamble_test, convolved_test])\n",
    "rounded_predictions = np.where(predictions > 0, 1, -1)\n",
    "print(rounded_predictions.shape, input_data_symbols_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.94355325"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rounded_predictions_reshaped = rounded_predictions.reshape((4000000, 2))\n",
    "test_data_reshaped = input_data_symbols_test.reshape((4000000, 2))\n",
    "calc_accuracy(rounded_predictions_reshaped, test_data_reshaped)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8906545"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "correct = 0\n",
    "for prediction, actual in zip(rounded_predictions_reshaped, test_data_reshaped):\n",
    "#     print(prediction, actual)\n",
    "    if np.array_equal(prediction, actual):\n",
    "        correct += 1\n",
    "\n",
    "correct / rounded_predictions_reshaped.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "class ZeroForcing:\n",
    "    def __init__(self, init_params={}):\n",
    "        self.channel = None\n",
    "    \n",
    "    def train(self, x, y, channel_taps):\n",
    "        self.channel = channel_taps\n",
    "    \n",
    "    def predict(self, x):\n",
    "        if (self.channel is None):\n",
    "            raise ValueError(\"ZeroForcing.predict: must train with channel first\")\n",
    "        if(isinstance(x[0], complex)):\n",
    "            freq_domain = np.fft.fft(x, len(x))/np.fft.fft(self.channel, len(x))\n",
    "            return np.fft.ifft(freq_domain)[0:len(x) - len(self.channel) + 1]\n",
    "        else:\n",
    "            freq_domain = np.fft.fft(x, len(x))/np.fft.fft(self.channel, len(x))\n",
    "            return np.real(np.fft.ifft(freq_domain)[0:len(x) - len(self.channel) + 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_topleitz(row_vector, channel_length):\n",
    "    import scipy.linalg as la\n",
    "    first_row = row_vector[:channel_length]\n",
    "    first_col = row_vector\n",
    "    return la.toeplitz(first_col, first_row)\n",
    "\n",
    "def least_squares(A, b):\n",
    "    return np.linalg.lstsq(A, b)[0]\n",
    "\n",
    "def perform_least_squares(preamble, preamble_convolved, channel_length):\n",
    "    A, b = generate_topleitz(preamble, channel_length), preamble_convolved\n",
    "    prediction = least_squares(A, b)\n",
    "    return np.array(prediction)\n",
    "\n",
    "def modulate(data, mod_scheme='BPSK', demod=False):\n",
    "    \"\"\"  1. Modulates (or demodulates) data according to the modulation scheme \"\"\"\n",
    "    mod_schemes = ['BPSK', 'QPSK']\n",
    "    data = data.flatten()\n",
    "    if mod_scheme not in mod_schemes:\n",
    "        raise ValueError('Unknown modulation scheme, please choose from: '+ ' '.join(mod_schemes))\n",
    "    elif mod_scheme == 'QPSK':\n",
    "        modulator = cp.modulation.QAMModem(4)\n",
    "        if demod:\n",
    "            return modulator.demodulate(data, \"hard\")\n",
    "        return modulator.modulate(data)\n",
    "    elif mod_scheme == 'BPSK':\n",
    "        def bpsk_one(x):\n",
    "            if demod:\n",
    "                return 0 if x < 0 else 1\n",
    "            return -1 if x==0 else 1\n",
    "        bpsk = np.vectorize(bpsk_one)\n",
    "        return bpsk(data)\n",
    "    \n",
    "def apply_channel(signal, channel_function):\n",
    "    \"\"\"  2. Convolves signal with channel_function \"\"\"\n",
    "    channel_output = sig.convolve(signal, channel_function, mode='same') # convolve input complex data with the channel transfer function\n",
    "    return channel_output\n",
    "\n",
    "def generate_A_hat(channel_estimate, data_length):\n",
    "    matrix = np.zeros((data_length, data_length), dtype='complex')\n",
    "    for i in range(data_length - 1): \n",
    "        matrix[i][i] = channel_estimate[0]\n",
    "        matrix[i+1][i] = channel_estimate[1]\n",
    "    matrix[data_length - 1][data_length - 1] = channel_estimate[0]\n",
    "    return matrix\n",
    "\n",
    "def mse(predicted_signal, test_signal):\n",
    "    predicted_signal = predicted_signal[:len(test_signal)]\n",
    "    from sklearn.metrics import mean_squared_error\n",
    "    real_test_sig, real_predicted_sig = np.real(test_signal), np.real(predicted_signal)\n",
    "    imag_test_sig, imag_predicted_sig = np.imag(test_signal), np.imag(predicted_signal)\n",
    "    real_im_test = np.vstack((real_test_sig, imag_test_sig)).T\n",
    "    real_im_predicted = np.vstack((real_predicted_sig, imag_predicted_sig)).T\n",
    "    return mean_squared_error(real_im_test, real_im_predicted)\n",
    "\n",
    "def mse_zf(predicted_signal, test_signal):\n",
    "    \n",
    "    test_signal = test_signal[:len(predicted_signal)]\n",
    "    from sklearn.metrics import mean_squared_error\n",
    "    real_test_sig, real_predicted_sig = np.real(test_signal), np.real(predicted_signal)\n",
    "    imag_test_sig, imag_predicted_sig = np.imag(test_signal), np.imag(predicted_signal)\n",
    "    real_im_test = np.vstack((real_test_sig, imag_test_sig)).T\n",
    "    real_im_predicted = np.vstack((real_predicted_sig, imag_predicted_sig)).T\n",
    "    return mean_squared_error(real_im_test, real_im_predicted)\n",
    "\n",
    "def MMSE_equalization_QPSK(channel_estimate, data_convolved, data_length, snr):\n",
    "    std = 10 ** (-snr / 20)\n",
    "#     print('sigma^2', std ** 2)\n",
    "    A_hat = generate_A_hat(channel_estimate, data_length)\n",
    "#     print(A_hat)\n",
    "    A_hat = np.asmatrix(A_hat)\n",
    "    to_invert = np.dot(A_hat, A_hat.H) + (std ** 2) * np.identity(data_length)\n",
    "    eigenvalues, eigenvectors = np.linalg.eig(to_invert)\n",
    "    eigenvalues_2, eigenvectors_2 = np.linalg.eig(np.dot(A_hat, A_hat.H))\n",
    "    print('Max eigenvalue to_invert', np.max(eigenvalues))\n",
    "    print('Min eigenvalue to_invert', np.min(eigenvalues))\n",
    "    \n",
    "    print('Max eigenvalue AAh', np.max(eigenvalues_2))\n",
    "    print('Min eigenvalue AAh', np.min(eigenvalues_2))\n",
    "    B = np.dot(np.linalg.inv(to_invert), A_hat)\n",
    "    data_est = np.dot(B.H, data_convolved)\n",
    "    return data_est"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_data_baseline_equalizers(dataset_size, preamble_length, data_length, channel_length, SNR, constellations):\n",
    "    QAMModem = cp.modulation.QAMModem(constellations)\n",
    "    \n",
    "    preambles_constellations = []\n",
    "    input_data_constellations = []\n",
    "    convolved_preambles = []\n",
    "    convolved_data_constellations = []\n",
    "    channels = []\n",
    "    for i in range(dataset_size):\n",
    "        input_data_bits = np.random.randint(0, 2, data_length)\n",
    "        preambles = np.random.randint(0, 2, preamble_length)\n",
    "        \n",
    "        input_data_constellation = QAMModem.modulate(input_data_bits)\n",
    "        input_data_constellations.append(input_data_constellation)\n",
    "        \n",
    "        preambles_constellation =  QAMModem.modulate(preambles)\n",
    "        preambles_constellations.append(preambles_constellation)\n",
    "        \n",
    "        channel_taps = np.random.uniform(-1, 1, channel_length)\n",
    "        channel_taps = channel_taps / np.linalg.norm(channel_taps)\n",
    "        channels.append(channel_taps)\n",
    "        \n",
    "        preamble_conv = sig.convolve(preambles_constellation, channel_taps, mode='same')\n",
    "        convolved_preambles.append(preamble_conv)\n",
    "        \n",
    "        constellation_convolved = add_awgn_noise(sig.convolve(input_data_constellation, channel_taps, mode='same'), SNR)\n",
    "        convolved_data_constellations.append(constellation_convolved)\n",
    "    \n",
    "    return np.array(preambles_constellations), np.array(convolved_preambles), np.array(convolved_data_constellations), np.array(channels), np.array(input_data_constellations)\n",
    "    \n",
    "\n",
    "def gen_data_for_plot_NN_MMSE(dataset_size, preamble_length, data_length, channel_length, constellations, SNRS):\n",
    "    errors_MMSE = []\n",
    "    errors_NN = []\n",
    "    channel_x = []\n",
    "    channel_y = []\n",
    "    for snr in SNRS:\n",
    "        print('SNR: ', snr)\n",
    "        i = 0\n",
    "        preambles, preamble_conv_full, convolved_data_full, channels, input_data_constellations = generate_data_baseline_equalizers(dataset_size, preamble_length, data_length, channel_length, snr, constellations)\n",
    "        for preamble, preamble_conv, convolved_data, channel, input_data_constellation in zip(preambles, preamble_conv_full, convolved_data_full, channels, input_data_constellations):\n",
    "            if i % 20 == 0:\n",
    "                print(i)\n",
    "            i += 1\n",
    "#             print(preamble.shape, preamble_conv.shape, channel.shape)\n",
    "            channel_estimate = perform_least_squares(preamble, preamble_conv, channels.shape[1])\n",
    "            lms_test_output = MMSE_equalization_QPSK_SVD(channel_estimate, convolved_data, input_data_constellation.shape[0], snr)\n",
    "            lms_mse = mse(lms_test_output, input_data_constellation)\n",
    "            errors_MMSE.append(lms_mse)\n",
    "            \n",
    "            preamble_real, preamble_imag = np.real(preamble), np.imag(preamble)\n",
    "            real_im_preamble = np.vstack((preamble_real,preamble_imag)).reshape((-1,),order='F')\n",
    "            preamble_conv_real, preamble_conv_imag = np.real(preamble_conv)[:len(preamble)], np.imag(preamble_conv)[:len(preamble)]\n",
    "            real_im_preambles_conv = np.vstack((preamble_conv_real, preamble_conv_imag)).reshape((-1,),order='F')\n",
    "            preamble_test_rnn = np.hstack([real_im_preamble, real_im_preambles_conv])\n",
    "            \n",
    "            real_constellation_conv = np.real(convolved_data)\n",
    "            im_constellation_conv = np.imag(convolved_data)\n",
    "            convolved_test_rnn = np.vstack((real_constellation_conv,im_constellation_conv)).T\n",
    "            \n",
    "            real_input = np.real(input_data_constellation)\n",
    "            im_input = np.imag(input_data_constellation)\n",
    "            input_data_symbols_test_rnn = np.vstack((real_input,im_input)).T\n",
    "            \n",
    "            preamble_test_rnn = preamble_test_rnn.reshape((1, preamble_test_rnn.shape[0]))\n",
    "            convolved_test_rnn = convolved_test_rnn.reshape((1, convolved_test_rnn.shape[0], convolved_test_rnn.shape[1]))\n",
    "            input_data_symbols_test_rnn = input_data_symbols_test_rnn.reshape((1, input_data_symbols_test_rnn.shape[0], input_data_symbols_test_rnn.shape[1]))\n",
    "            predictions_rnn = model.predict([preamble_test_rnn, convolved_test_rnn])\n",
    "            nn_mse = mean_squared_error(predictions_rnn.flatten(), input_data_symbols_test_rnn.flatten())\n",
    "            errors_NN.append(nn_mse)\n",
    "            \n",
    "            channel_x.append(channel[0] * snr)\n",
    "            channel_y.append(channel[1] * snr)\n",
    "            \n",
    "            \n",
    "        \n",
    "    return np.array(channel_x), np.array(channel_y), errors_NN, errors_MMSE\n",
    "\n",
    "from scipy.interpolate import griddata\n",
    "def heat_plot(channel_x, channel_y, errors_MMSE, errors_NN):\n",
    "    X = channel_x\n",
    "    Y = channel_y\n",
    "    Z1 = np.log10(errors_MMSE)\n",
    "    Z2 = np.log10(errors_NN)\n",
    "    # create x-y points to be used in heatmap\n",
    "    xi = np.logspace(-4, 4,100)\n",
    "    yi = np.logspace(-4, 4,100)\n",
    "\n",
    "    # Z is a matrix of x-y values\n",
    "    zi1 = griddata((X, Y), Z1, (xi[None,:], yi[:,None]), method='linear')\n",
    "    zi2 = griddata((X, Y), Z2, (xi[None,:], yi[:,None]), method='linear')\n",
    "\n",
    "    # direction = channel, radius = SNR\n",
    "    f, ax = plt.subplots(1, 2, figsize = (8*2, 6),sharex=True,sharey=True)\n",
    "    ax[0].set_title('MMSE equalizer L2 error, log scale')\n",
    "    ax[1].set_title('NN equalizer L2 error, log scale')\n",
    "    CS1 = ax[0].contourf(xi, yi, zi1, 15, cmap=plt.cm.rainbow, vmin=-10, vmax=2)\n",
    "    CS2 = ax[1].contourf(xi, yi, zi2, 15, cmap=plt.cm.rainbow, vmin=-10, vmax=2)\n",
    "\n",
    "    ax[0].set_yscale('log')\n",
    "    ax[0].set_xscale('log')\n",
    "    ax[1].set_yscale('log')\n",
    "    ax[1].set_xscale('log')\n",
    "\n",
    "    f.subplots_adjust(right=0.8)\n",
    "    cbar_ax = f.add_axes([0.85, 0.15, 0.05, 0.7])\n",
    "    f.colorbar(CS1, cax=cbar_ax)\n",
    "\n",
    "    ax[0].set_xlabel(\"(tap 1 value) x (channel SNR), log scale\")\n",
    "    ax[1].set_xlabel(\"(tap 1 value) x (channel SNR), log scale\")\n",
    "    ax[0].set_ylabel(\"(tap 2 value) x (channel SNR), log scale\")\n",
    "    ax[1].set_ylabel(\"(tap 2 value) x (channel SNR), log scale\")\n",
    "\n",
    "\n",
    "    plt.show()\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating data\n",
      "SNR:  0.0001\n",
      "0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:8: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.00026366508987303583\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.0006951927961775605\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.0018329807108324356\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.004832930238571752\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.012742749857031334\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.03359818286283781\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.08858667904100823\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.23357214690901212\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  0.615848211066026\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  1.623776739188721\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  4.281332398719396\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  11.288378916846883\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  29.763514416313132\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  78.47599703514607\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  206.913808111479\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  545.5594781168514\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  1438.44988828766\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  3792.690190732246\n",
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n",
      "SNR:  10000.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:6: RuntimeWarning: overflow encountered in double_scalars\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "20\n",
      "40\n",
      "60\n",
      "80\n",
      "100\n",
      "120\n",
      "140\n",
      "160\n",
      "180\n",
      "200\n",
      "220\n",
      "240\n",
      "260\n",
      "280\n"
     ]
    }
   ],
   "source": [
    "dataset_size = 300\n",
    "preamble_length = 80\n",
    "data_length = 400\n",
    "channel_length = 2\n",
    "QAM_scheme = 4\n",
    "snrs = np.logspace(-4,4,20)\n",
    "print('Generating data')\n",
    "channel_x, channel_y, errors_NN, errors_MMSE = gen_data_for_plot_NN_MMSE(dataset_size, preamble_length, data_length, channel_length, QAM_scheme, snrs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x128e00208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "heat_plot(channel_x, channel_y, errors_MMSE, errors_NN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [],
   "source": [
    "def MMSE_equalization_QPSK_SVD(channel_estimate, data_convolved, data_length, snr):\n",
    "    std = 10 ** (-snr / 20)\n",
    "#     print('sigma^2', std ** 2)\n",
    "    A_hat = generate_A_hat(channel_estimate, data_length)\n",
    "#     print(A_hat)\n",
    "    A_hat = np.asmatrix(A_hat)\n",
    "    to_invert = np.dot(A_hat, A_hat.H) + (std ** 2) * np.identity(data_length)\n",
    "    eigenvalues, eigenvectors = np.linalg.eig(to_invert)\n",
    "    eigenvalues_2, eigenvectors_2 = np.linalg.eig(np.dot(A_hat, A_hat.H))\n",
    "#     print('Max eigenvalue to_invert', np.max(eigenvalues))\n",
    "#     print('Min eigenvalue to_invert', np.min(eigenvalues))\n",
    "    \n",
    "#     print('Max eigenvalue AAh', np.max(eigenvalues_2))\n",
    "#     print('Min eigenvalue AAh', np.min(eigenvalues_2))\n",
    "    B = np.dot(np.linalg.pinv(to_invert), A_hat)\n",
    "    data_est = np.dot(B.H, data_convolved)\n",
    "    return data_est"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(40,) (40,)\n",
      "[ 1.-1.j -1.-1.j  1.-1.j  1.-1.j  1.-1.j -1.+1.j  1.-1.j -1.-1.j  1.+1.j\n",
      "  1.+1.j  1.+1.j -1.-1.j -1.+1.j  1.+1.j -1.-1.j  1.+1.j -1.+1.j -1.+1.j\n",
      " -1.-1.j  1.-1.j -1.-1.j -1.+1.j  1.+1.j -1.-1.j  1.+1.j -1.-1.j -1.+1.j\n",
      "  1.-1.j -1.+1.j -1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j -1.-1.j -1.-1.j\n",
      "  1.+1.j -1.+1.j  1.+1.j -1.+1.j]\n",
      "[ 0.+0.j  1.-1.j -1.-1.j  1.-1.j  1.-1.j  1.-1.j -1.+1.j  1.-1.j -1.-1.j\n",
      "  1.+1.j  1.+1.j  1.+1.j -1.-1.j -1.+1.j  1.+1.j -1.-1.j  1.+1.j -1.+1.j\n",
      " -1.+1.j -1.-1.j  1.-1.j -1.-1.j -1.+1.j  1.+1.j -1.-1.j  1.+1.j -1.-1.j\n",
      " -1.+1.j  1.-1.j -1.+1.j -1.-1.j  1.-1.j  1.-1.j  1.-1.j  1.-1.j -1.-1.j\n",
      " -1.-1.j  1.+1.j -1.+1.j  1.+1.j]\n",
      "[0, 1]\n",
      "Predicted channel [-0.00188679+0.02578616j  0.97421384+0.00188679j]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:8: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max eigenvalue to_invert (1.0001353196410614+2.6566151709160886e-17j)\n",
      "Min eigenvalue to_invert (-2.515304824240669e-19+1.3883571618980797e-20j)\n",
      "Max eigenvalue AAh (1.0001353196410614+2.6566151709160886e-17j)\n",
      "Min eigenvalue AAh (-2.515304824240669e-19+1.3883571618980797e-20j)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD8CAYAAACfF6SlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXnQbdlVH7b2ue9pQsJCMwaEbIOtAJ6wCidxiDGxMVAJuIKdsqlUsOOUUrFdTuI/HDAOIYAHMMR4AjOYwTYBURSDCEJonlFLLdSopZZ6UA9qtVrdr+fx9XvfPTt/nLvO/q3f/q1z7nvv+x7S13dVfXXvd+4+ezprr/1bv732PqXWagc5yEEOcpCnlwy/1xU4yEEOcpCDXH05GP+DHOQgB3kaysH4H+QgBznI01AOxv8gBznIQZ6GcjD+BznIQQ7yNJSD8T/IQQ5ykKehHIz/QQ5ykIM8DeVg/A9ykIMc5GkoB+N/kIMc5CBPQznze12BTF70ohfVV7ziFb/X1TjIQQ5ykM8q+cAHPnBfrfXFa+k+Y43/K17xCrv22mt/r6txkIMc5CCfVVJKuWOfdAfa5yAHOchBnoZyMP4HOchBDvI0lIPxP8hBDnKQp6EcjP9BDnKQgzwN5WD8D3KQgxzkaSgH43+QgxzkIE9DORj/gxzkIAd5GsqpNv633/e4/dw1d9i9j5xfTXv+4tZ+9YN32Ti211r+7p0P2X987x32sU8/cpLVDFJrtQtHY7h24Wi0D9zxoP3cNXfYv37LzfZr191l9z6at+mpo61d3I7d9QtHY5f3koxjtTsfeMLufOAJu1qv+3zw8Qv2m9ffvVfao+0o27kmTx1tw3NekvMXt6tpHn7ioj30xIW5j2q9tH6rtdr7bnvgivpY9dsNn3rEfubdt9mPvO0We9uN93Ztydr2xIWj1bocbUd7zy332U++81b76N2PLKbfpw/Npn6495Hze6e/Ujl/cWvbPfVgH/ngJx60p46uTt2PQ06t8f8Pv327fc0Pvs2+81c+bD/yto/P1z/26UfsO375+m7wv/Pm++x/e8119s5b7puv/dAbb7J/+Ksftq//4Xfa+29/IKTfjtX+j1/6kN10z6Pheq3Vvvf/u8Hee+v9l1Xv//vXb7Bv/Yn3zv+fv7i1//yfvsW+5UffY9/5Kx+2H3zDTfa//sJ19ud/6O1hwP3itXfadXc+ZGZm3/ZT77N/+psf6/L+9l/+kP3dn//g/P84VvtXb77ZHnj8gqzLj73jVvvqH3irffUPvNV+4p23XlZ7MnnPx++z7399X8df/9Cn7H/5ud+xm6lflfzdX/ig/c2f1RsBs+dzcTva1/yzt9m/eestq/l/8BMP2h/97t+yD33yoTTNuUefsj/9T95kf+J73mjf9K/fbWZmP3fNJ+Z++7F39P32I2+7xV4HhvqDdz5k/92P/ba96aP3rtYpE9Vvf+8Xr7Pv/vUb7Adef6P99Z9+v/39X/rQ/NvdDz8p2/bkha396X/0Znv9hz+9WN63/sQ19q0/eY1932981L7hX7zTfvANN8p0t9z7qP2x736DvQfGVSY//7477av+8Zvtlf/n6+3n3/eJ1fQoDz950f7311xn9ywAvXGs9o3/4p3zJPn1P/wO++l337aa9yPnL9o/+c2P2hMXjtI0jz11ZH/53/62/djb++f9/a//mP32x5ftwa9dd5e9/sP7gZ7jklNr/G+77wl71tnBvuoVL7B33Hxuvv6um++zn3/fJ+yR8xdDekeQ77yppT3ajvbMM1MXPfRETP/A4xfsNdfe2T3Um+55zP7du26zt37s8gbypx8+b9fe8aB98sEnzGxSqvsee8q+7T/7YnvPt3+tfex7v97+xz/zB+yR80eG89cPvP5Ge8377zQzs3seeco+LQbBPY+ct3vAY7jzwSfsh954k73tRl3X1/7up+yVL3uePWMz2H2P6QnicuXNH73Xfubdt3fX3TN5x83LxuLxp47sTTfca++6+Zw9KCavB5+Yng8bnWtvf9Dufvi8/drvfmq1jr923afs4rba667PDeEbb7jHzl8c7Su+4HPtlnsfMzOz+x57yszMnrEZ7P7dd5eHnrhg/88bbrLf+FAb6E88NaHFNYO7JKrfnjoa7Ru+4mV2/Xd/nb3yZc+zB59o/XTfoxfs4rba3Q9HPXniwpE9+tSR1B+UW+973P7Cl73U3vn3/5x9wfOfbbff94RM9/oPf9oubEf79Q+t9/e5R1u/3XrusdX0KL/xobvtVz541wyAlByN1W64+xG7efecPv3Iefv0w+uswC++/077sbffar9758Npmqd2XsRvfaR/hj/97tvszR+9Z7GMn3737fZz11zahHelcizGv5TyU6WUe0spH05+L6WUf1lKuaWU8qFSylceR7lLMtZqz9gM9he/4mV267nHZ2PqYJm9vXH3A04Ungf+7uKom6//5m725uuXUm8z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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x128e007b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x126229c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0.006520679982221902"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "QAMModem = cp.modulation.QAMModem(4)\n",
    "channel_length = 2\n",
    "preamble_length = 80\n",
    "data_length = 400\n",
    "\n",
    "modulation_scheme = 'QPSK'\n",
    "\n",
    "snr = 5000\n",
    "\n",
    "# channel_function = np.random.uniform(-1, 1, channel_length) \n",
    "# channel_function = channel_function / np.linalg.norm(channel_function)\n",
    "channel_function = [0, 1]\n",
    "\n",
    "# generate training data\n",
    "preamble_bits = np.random.randint(0,2, preamble_length) \n",
    "preamble_symbols = QAMModem.modulate(preamble_bits)\n",
    "preamble_convolved = apply_channel(preamble_symbols, channel_function)\n",
    "# generate testing data\n",
    "data_bits = np.random.randint(0,2, data_length)\n",
    "data_symbols = QAMModem.modulate(data_bits)\n",
    "data_convolved = add_awgn_noise(apply_channel(data_symbols, channel_function), snr)\n",
    "print(preamble_symbols.shape, preamble_convolved.shape)\n",
    "print(preamble_symbols)\n",
    "print(preamble_convolved)\n",
    "print(channel_function)\n",
    "channel_estimate = perform_least_squares(preamble_symbols, preamble_convolved, channel_length)\n",
    "print('Predicted channel', channel_estimate)\n",
    "data_est = MMSE_equalization_QPSK_SVD(channel_estimate, data_convolved, data_length // 2, snr)\n",
    "\n",
    "plt.plot(np.array(np.real(data_est)).flatten())\n",
    "plt.show()\n",
    "plt.plot(np.array(np.imag(data_est)).flatten())\n",
    "plt.show()\n",
    "mse(data_est, data_symbols)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "def least_squares_equalizer(channel_estimate, data_convolved):\n",
    "    data_est = np.zeros(data_convolved.shape, dtype='complex')\n",
    "    data_est[0] = data_convolved[0] / channel_estimate[0]\n",
    "    for i in range(1, data_est.shape[0]):\n",
    "        data_est[i] = (data_convolved[i] - channel_estimate[1] * data_est[i - 1]) / channel_estimate[0]\n",
    "    return data_est\n",
    "\n",
    "def gen_data_for_plot_ZF_LS(dataset_size, preamble_length, data_length, channel_length, constellations, SNRS):\n",
    "    errors_LS = []\n",
    "    errors_ZF = []\n",
    "    channel_x = []\n",
    "    channel_y = []\n",
    "    for snr in SNRS:\n",
    "        print('SNR: ', snr)\n",
    "        preambles, preamble_conv_full, convolved_data_full, channels, input_data_constellations = generate_data_baseline_equalizers(dataset_size, preamble_length, data_length, channel_length, snr, constellations)\n",
    "        for preamble, preamble_conv, convolved_data, channel, input_data_constellation in zip(preambles, preamble_conv_full, convolved_data_full, channels, input_data_constellations):\n",
    "            channel_estimate = perform_least_squares(preamble, preamble_conv, channels.shape[1])\n",
    "            ls_test_output = least_squares_equalizer(channel_estimate, convolved_data)\n",
    "            ls_test_output = np.nan_to_num(ls_test_output)\n",
    "            ls_mse = mse(ls_test_output, input_data_constellation)\n",
    "            errors_LS.append(ls_mse)\n",
    "\n",
    "            \n",
    "            ZF = ZeroForcing()\n",
    "            ZF.train(preamble_conv, preamble, channel)\n",
    "            zf_test_output = ZF.predict(convolved_data)\n",
    "            zf_mse = mse_zf(zf_test_output, input_data_constellation)\n",
    "            errors_ZF.append(zf_mse)\n",
    "\n",
    "            \n",
    "            channel_x.append(channel[0] * snr)\n",
    "            channel_y.append(channel[1] * snr)\n",
    "        \n",
    "    return np.array(channel_x), np.array(channel_y), errors_ZF, errors_LS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating data\n",
      "SNR:  0.0001\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:8: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  \n",
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/metrics/regression.py:232: RuntimeWarning: overflow encountered in square\n",
      "  output_errors = np.average((y_true - y_pred) ** 2, axis=0,\n",
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:5: RuntimeWarning: overflow encountered in cdouble_scalars\n",
      "  \"\"\"\n",
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:5: RuntimeWarning: invalid value encountered in cdouble_scalars\n",
      "  \"\"\"\n",
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/core/_methods.py:32: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SNR:  0.00026366508987303583\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/core/_methods.py:32: RuntimeWarning: invalid value encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SNR:  0.0006951927961775605\n",
      "SNR:  0.0018329807108324356\n",
      "SNR:  0.004832930238571752\n",
      "SNR:  0.012742749857031334\n",
      "SNR:  0.03359818286283781\n",
      "SNR:  0.08858667904100823\n",
      "SNR:  0.23357214690901212\n",
      "SNR:  0.615848211066026\n",
      "SNR:  1.623776739188721\n",
      "SNR:  4.281332398719396\n",
      "SNR:  11.288378916846883\n",
      "SNR:  29.763514416313132\n",
      "SNR:  78.47599703514607\n",
      "SNR:  206.913808111479\n",
      "SNR:  545.5594781168514\n",
      "SNR:  1438.44988828766\n",
      "SNR:  3792.690190732246\n",
      "SNR:  10000.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:6: RuntimeWarning: overflow encountered in double_scalars\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "dataset_size = 300\n",
    "preamble_length = 80\n",
    "data_length = 400\n",
    "channel_length = 2\n",
    "QAM_scheme = 4\n",
    "snrs = np.logspace(-4,4,20)\n",
    "print('Generating data')\n",
    "channel_x, channel_y, errors_ZF, errors_LS = gen_data_for_plot_ZF_LS(dataset_size, preamble_length, data_length, channel_length, QAM_scheme, snrs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "def heat_plot_ZF_LS(channel_x, channel_y, errors_LS, errors_ZF):\n",
    "    X = channel_x\n",
    "    Y = channel_y\n",
    "    Z1 = np.log10(errors_LS)\n",
    "    Z2 = np.log10(errors_ZF)\n",
    "    # create x-y points to be used in heatmap\n",
    "    xi = np.logspace(-4, 4,100)\n",
    "    yi = np.logspace(-4, 4,100)\n",
    "\n",
    "    # Z is a matrix of x-y values\n",
    "    zi1 = griddata((X, Y), Z1, (xi[None,:], yi[:,None]), method='linear')\n",
    "    zi2 = griddata((X, Y), Z2, (xi[None,:], yi[:,None]), method='linear')\n",
    "\n",
    "    # direction = channel, radius = SNR\n",
    "    f, ax = plt.subplots(1, 2, figsize = (8*2, 6),sharex=True,sharey=True)\n",
    "    ax[0].set_title('ZF equalizer L2 error, log scale')\n",
    "    ax[1].set_title('LS equalizer L2 error, log scale')\n",
    "    CS1 = ax[0].contourf(xi, yi, zi1, 15, cmap=plt.cm.rainbow, vmin=-10, vmax=2)\n",
    "    CS2 = ax[1].contourf(xi, yi, zi2, 15, cmap=plt.cm.rainbow, vmin=-10, vmax=2)\n",
    "\n",
    "    ax[0].set_yscale('log')\n",
    "    ax[0].set_xscale('log')\n",
    "    ax[1].set_yscale('log')\n",
    "    ax[1].set_xscale('log')\n",
    "\n",
    "    f.subplots_adjust(right=0.8)\n",
    "    cbar_ax = f.add_axes([0.85, 0.15, 0.05, 0.7])\n",
    "    f.colorbar(CS1, cax=cbar_ax)\n",
    "\n",
    "    ax[0].set_xlabel(\"(tap 1 value) x (channel SNR), log scale\")\n",
    "    ax[1].set_xlabel(\"(tap 1 value) x (channel SNR), log scale\")\n",
    "    ax[0].set_ylabel(\"(tap 2 value) x (channel SNR), log scale\")\n",
    "    ax[1].set_ylabel(\"(tap 2 value) x (channel SNR), log scale\")\n",
    "\n",
    "\n",
    "    plt.show()\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x125400160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "heat_plot_ZF_LS(channel_x, channel_y, errors_ZF, errors_LS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating data\n",
      "SNR:  0.0001\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:8: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SNR:  0.00026366508987303583\n",
      "SNR:  0.0006951927961775605\n",
      "SNR:  0.0018329807108324356\n",
      "SNR:  0.004832930238571752\n",
      "SNR:  0.012742749857031334\n",
      "SNR:  0.03359818286283781\n",
      "SNR:  0.08858667904100823\n",
      "SNR:  0.23357214690901212\n",
      "SNR:  0.615848211066026\n",
      "SNR:  1.623776739188721\n",
      "SNR:  4.281332398719396\n",
      "SNR:  11.288378916846883\n",
      "SNR:  29.763514416313132\n",
      "SNR:  78.47599703514607\n",
      "SNR:  206.913808111479\n",
      "SNR:  545.5594781168514\n",
      "SNR:  1438.44988828766\n",
      "SNR:  3792.690190732246\n",
      "SNR:  10000.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:6: RuntimeWarning: overflow encountered in double_scalars\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "dataset_size = 300\n",
    "preamble_length = 80\n",
    "data_length = 40\n",
    "channel_length = 2\n",
    "QAM_scheme = 4\n",
    "snrs = np.logspace(-4,4,20)\n",
    "print('Generating data')\n",
    "channel_x, channel_y, errors_ZF_short, errors_LS_short = gen_data_for_plot_ZF_LS(dataset_size, preamble_length, data_length, channel_length, QAM_scheme, snrs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1264c4978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "heat_plot_ZF_LS(channel_x, channel_y, errors_ZF, errors_LS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
